1. Field of the Disclosure
This disclosure relates generally to computer systems, and more specifically to systems and methods for retiring and unretiring cache locations.
2. Description of the Related Art
Modern processors incorporate a variety of caches for storing data, instructions, address translations, state information, and/or other information that is likely to be accessed frequently, or that is likely to be accessed soon after a first access by a particular application or process. In the absence of in-line correction, when errors are detected in a cache, they may be reported to a software process that takes any necessary corrective action. A cache location with a stuck-at fault, a weak bit cell, or another persistent (or frequently recurring) error may generate frequent error reports to the error handling software, which can lead to an unacceptable loss of performance in the system. Some systems provide mechanisms for retiring such bad cache locations.
In some previous systems, retiring and unretiring cache locations are performed by issuing diagnostic writes to the state array of the cache to set or reset the lock bits for the cache locations being retired or unretired. However, in these previous systems, all threads other than the one performing the retiring or unretiring operations must be halted in order to perform the operations because the state array update requires an isolated read-modify-write access. Otherwise, if other threads are running, they could potentially update the same state array entry as the one for the cache location being retired/unretired and thus corrupt the cache state.